package agente;

import dados.Stock;
import dados.TipoSugestao;

public class Sugestao {

	private Stock stock;
	private TipoSugestao tiposugestao;

	public Sugestao(Stock stock, TipoSugestao tiposugestao) {
		this.stock = stock;
		this.tiposugestao = tiposugestao;
	}

	public Stock getStock() {
		return stock;
	}

	public void setStock(Stock stock) {
		this.stock = stock;
	}

	public TipoSugestao getTiposugestao() {
		return tiposugestao;
	}

	public void setTiposugestao(TipoSugestao tiposugestao) {
		this.tiposugestao = tiposugestao;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((stock == null) ? 0 : stock.hashCode());
		result = prime * result
				+ ((tiposugestao == null) ? 0 : tiposugestao.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if(obj.getClass() == Sugestao.class){
			Sugestao s = (Sugestao) obj;
			if(s.getStock().getSigla() == stock.getSigla()){
				if((s.getTiposugestao() == TipoSugestao.COMPRA_ANALISTA || s.getTiposugestao() == TipoSugestao.COMPRA_VIGARISTA
						|| s.getTiposugestao() == TipoSugestao.VOLUME_ANALISTA || s.getTiposugestao() == TipoSugestao.OSDOIS_COMPRA)
						&& (tiposugestao == TipoSugestao.COMPRA_ANALISTA || tiposugestao == TipoSugestao.COMPRA_VIGARISTA || 
						tiposugestao == TipoSugestao.VOLUME_ANALISTA || tiposugestao == TipoSugestao.OSDOIS_COMPRA)){
					return true;
				}else if((s.getTiposugestao() == TipoSugestao.VENDA_ANALISTA || s.getTiposugestao() == TipoSugestao.VENDA_VIGARISTA
						|| s.getTiposugestao() == TipoSugestao.OSDOIS_VENDA)
						&& (tiposugestao == TipoSugestao.VENDA_ANALISTA || tiposugestao == TipoSugestao.VENDA_VIGARISTA || tiposugestao == TipoSugestao.OSDOIS_VENDA)){
					return true;
				}else{
					return false;
				}
			}
		}
		return false;
	}

}
